﻿//using System;
//using System.Collections.Generic;
//using System.Configuration;
//using System.Data.Objects;
//using System.Globalization;
//using System.Linq;
//using System.Text;
//using S3;
//using System.Data;
//using S3.biz;
//using S3.data;
//using S3.Properties;

//namespace S3.common
//{
//    public static class ActionLogger
//    {
//        public static void LogAction(ActionType action, string userId, DateTime occuredDate, string[] arguments)
//        {
//            try
//            {
//                using (var psmEntity = new PSMEntities())
//                {
//                    var description = string.Empty;

//                    //Assign Description value based on action
//                    switch (action)
//                    {
//                        case ActionType.StartMachine:
//                            if (arguments.Length > 0)
//                            {
//                                description = string.Format(CultureInfo.InvariantCulture, Resources.StartMachine, arguments[0]);
//                            }
//                            break;
//                        case ActionType.StopMachine:
//                            if (arguments.Length > 0)
//                            {
//                                description = string.Format(CultureInfo.InvariantCulture, Resources.StopMachine, arguments[0]);
//                            }
//                            break;
//                        case ActionType.ChangeDesk:
//                            if (arguments.Length > 4)
//                            {
//                                description = string.Format(CultureInfo.InvariantCulture, Resources.ChangeDesk, arguments[0], arguments[1], arguments[2], arguments[3], arguments[4]);
//                            }
//                            break;
//                        case ActionType.ChangeType:
//                            if (arguments.Length > 3)
//                            {
//                                description = string.Format(CultureInfo.InvariantCulture, Resources.ChangeType, arguments[0], arguments[1], arguments[2], arguments[3]);
//                            }
//                            break;
//                        case ActionType.AddService:
//                            if (arguments.Length > 2)
//                            {
//                                description = string.Format(CultureInfo.InvariantCulture, Resources.AddService, arguments[0], arguments[1], arguments[2]);
//                            }
//                            break;
//                        case ActionType.ChangeMachineQuantity:
//                            description = Resources.ChangeMachineQuantity;
//                            break;
//                        case ActionType.ChangeService:
//                            description = Resources.ChangeService;
//                            break;
//                        case ActionType.ChangeBlock:
//                            description = Resources.ChangeBlock;
//                            break;
//                    }

//                    var actionHistory = new ActionHistory()
//                                            {
//                                                Action = Convert.ToString(action),
//                                                User = userId,
//                                                Time = occuredDate,
//                                                Description_ = description
//                                            };
//                    psmEntity.AddToActionHistories(actionHistory);
//                    psmEntity.SaveChanges();
//                }
//            }
//            catch (Exception)
//            {

//            }
//        }

//        public static DataTable ShowLog()
//        {
//            var data = GetValue(new object[] { });
//            return data;
//        }

//        public static void DeleteLog(string[] ids)
//        {
//            using (var psmEntity = new PSMEntities())
//            {
//                foreach (var id in ids)
//                {
//                    long longId;
//                    if (long.TryParse(id, out longId))
//                    {
//                        var actions = psmEntity.ActionHistories.Where(x => longId==x.ActionID).ToList();
//                        actions.ForEach(psmEntity.DeleteObject);
//                    }
//                }
//                psmEntity.SaveChanges();

//            }
//        }

//        public static DataTable Filter(DateTime startDate, DateTime endDate, string actionType, string user)
//        {
//            return GetValue(new object[] { startDate, endDate, actionType, user });
//        }

//        private static DataTable GetValue(object[] args)
//        {
//            var tbl = new DataTable();
//            tbl.Columns.Add("ID");
//            tbl.Columns.Add(Resources.ActionTypeCol);
//            tbl.Columns.Add(Resources.DescriptionCol);
//            tbl.Columns.Add(Resources.UserCol);
//            tbl.Columns.Add(Resources.DateTimeCol);

//            try
//            {
//                using (var psmEntity = new PSMEntities())
//                {
//                    IQueryable<ActionHistory> statistic;
//                    if (args.Length > 0)
//                    {
//                        var startDate = (DateTime)args[0];
//                        var endDate = (DateTime)args[1];
//                        var actionType = Convert.ToString(args[2]);
//                        var user = Convert.ToString(args[3]);
//                        statistic = psmEntity.ActionHistories.Where(x => x.Time >= startDate && x.Time <= endDate);
//                        if (!string.IsNullOrEmpty(actionType))
//                        {
//                            statistic = statistic.Where(x => x.Action == actionType);
//                        }
//                        if (!string.IsNullOrEmpty(user))
//                        {
//                            statistic = statistic.Where(x => x.User == user);
//                        }
//                    }
//                    else
//                    {
//                        statistic = psmEntity.ActionHistories;
//                    }
//                    foreach (var actionHistory in statistic)
//                    {
//                        var row = tbl.Rows.Add();
//                        row["ID"] = actionHistory.ActionID;
//                        row[Resources.ActionTypeCol] = ConfigurationManager.AppSettings[actionHistory.Action];
//                        row[Resources.DescriptionCol] = actionHistory.Description_;
//                        row[Resources.UserCol] = actionHistory.User;
//                        row[Resources.DateTimeCol] = actionHistory.Time;
//                    }
//                }
//            }
//            catch (Exception)
//            {
//            }

//            return tbl;
//        }
//    }
//}
